package com.ws.boot.demo.validate.service.method.parameter;


import com.ws.boot.demo.validate.entity.IdCard;
import com.ws.boot.demo.validate.entity.Person;
import com.ws.boot.validate.annotation.ValidComponent;
import com.ws.boot.validate.annotation.constraint.Mobile;
import com.ws.boot.web.domain.DefaultResponse;

import javax.validation.constraints.*;

/**
 * 方法参数 业务类 ： 基本数据类型，包括 八种基本数据类型 + 包装类 + String + 自定义 Bean .
 *
 * @className: MethodParameterForBaseDataTypeService
 * @author: ws
 * @date: 2020/4/2 9:34
 * @version: 1.0.0
 */
@ValidComponent
public interface MethodParameterForBaseDataTypeService {

    /**
     * 基本数据类型，不带校验 .
     * @param age
     * @param sex
     * @param readonly
     * @author ws
     * @date 2020/4/2 10:16
     * @return DefaultResponse
     **/
    DefaultResponse baseDataTypeWithoutValidation(int age, char sex, Boolean readonly);

    /**
     * 基本数据类型，带校验 .
     * @param age
     * @param sex
     * @param success
     * @param readonly
     * @author ws
     * @date 2020/4/2 10:15
     * @return DefaultResponse
     **/
    DefaultResponse baseDataType(@NotNull @Min(18) int age, @NotNull char sex
            , Boolean success, @NotNull Boolean readonly);

    /**
     * string 类型 .
     * @param username
     * @param mobile
     * @author ws
     * @date 2020/4/2 13:46
     * @return DefaultResponse
     **/
    DefaultResponse string(@NotBlank String username, @Mobile String mobile);

    /**
     * 基本数据类型 + 包装类 + String + 自定义 Bean .
     * @param age
     * @param readonly
     * @param username
     * @param person
     * @param password
     * @param idCard
     * @author ws
     * @date 2020/4/2 13:46
     * @return DefaultResponse
     **/
    DefaultResponse baseDataTypeWithStringWithPOJO(@NotNull @Max(200) int age
            , @NotNull Boolean readonly, @NotBlank String username, @NotNull Person person
            , String password, @Null IdCard idCard);

}
